<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>相等运算符</title>
</head>
<body>
    <h1>相等运算符</h1>

    <script>
        // 相等运算符（==）的规则
        console.log(null == undefined);  // true
        console.log(1 == true);         // true
        console.log('1' == true);       // true
        console.log([] == false);       // true
        console.log([] == ![]);         // true

        // 严格相等运算符（===）的规则
        console.log(null === undefined); // false
        console.log(1 === true);        // false
        console.log('1' === true);      // false
        console.log([] === false);      // false

        // NaN的特殊处理
        console.log(NaN == NaN);        // false
        console.log(NaN === NaN);       // false
        console.log(Object.is(NaN, NaN)); // true

        // +0和-0的处理
        console.log(+0 == -0);          // true
        console.log(+0 === -0);         // true
        console.log(Object.is(+0, -0)); // false

        // 对象的比较
        const obj1 = { a: 1 };
        const obj2 = { a: 1 };
        console.log(obj1 == obj2);      // false
        console.log(obj1 === obj2);     // false

        const obj3 = obj1;
        console.log(obj1 == obj3);      // true
        console.log(obj1 === obj3);     // true
    </script>
</body>
</html>  